Page({
  data: {
    userId: '',
    password: '',
    isLoading: false,
    isPasswordVisible: false
  },

  onLoad: function () {
    // 读取本地缓存中保存的账号密码
    const savedUserId = wx.getStorageSync('savedUserId');
    const savedPassword = wx.getStorageSync('savedPassword');

    if (savedUserId && savedPassword) {
      // 如果存在保存的账号密码，则填充到data中
      this.setData({
        userId: savedUserId,
        password: savedPassword
      });
    }
  },

  // 输入帐号
  onUserIdInput(e) {
    this.setData({
      userId: e.detail.value
    });
  },

  // 输入密码
  onPasswordInput(e) {
    this.setData({
      password: e.detail.value
    });
  },

  // 跳转到注册页面
  goToRegister() {
    wx.navigateTo({
      url: '/pages/register/register'
    });
  },

  // 处理登录
  handleLogin() {
    const {
      userId,
      password
    } = this.data;

    if (!userId || !password) {
      wx.showToast({
        title: '请输入帐号名和密码',
        icon: 'none'
      });
      return;
    }

    this.setData({
      isLoading: true
    });

    // 发送登录请求
    wx.request({
      url: 'http://127.0.0.1:3001/login',
      method: 'POST',
      data: {
        userId: userId,
        password: password
      },
      success: (res) => {
        // 检查返回的数据
        if (res.data && res.data.length > 0) {
          // 登录成功
          wx.setStorageSync('userId', userId);
          wx.setStorageSync('userInfo', res.data[0]);

          // 1. 先弹出"是否记住账号和密码"弹窗
          wx.showModal({
            title: '提示',
            content: '是否记住账号和密码？',
            success: (modalRes) => {
              if (modalRes.confirm) {
                // 用户点击确定，保存账号和密码到本地缓存
                wx.setStorageSync('savedUserId', userId);
                wx.setStorageSync('savedPassword', password);
              } else if (modalRes.cancel) {
                // 用户点击取消，不保存密码
              }

              // 2. 之后弹出"登录成功"提示，停留在登录页
              wx.showToast({
                title: '登录成功',
                icon: 'success',
                duration: 1500 // 确保用户能看到提示
              });

              // 3. 随后跳转到打卡页
              setTimeout(() => { // 使用 setTimeout 确保 toast 有时间显示
                wx.switchTab({
                  url: '/pages/record/record' // 跳转到打卡页
                });
              }, 1500); // 持续时间与 toast duration 相同

            },
            fail: () => {
              // 如果弹窗本身出现问题（极少发生），也尝试弹出登录成功并跳转
              wx.showToast({
                title: '登录成功',
                icon: 'success',
                duration: 1500
              });
              setTimeout(() => {
                wx.switchTab({
                  url: '/pages/record/record' // 跳转到打卡页
                });
              }, 1500);
            }
          });

        } else {
          // 登录失败
          wx.showToast({
            title: '帐号或密码错误',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('登录请求失败:', err); // 添加错误日志
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        });
      },
      complete: () => {
        this.setData({
          isLoading: false
        });
      }
    });
  },

  // 切换密码显示状态
  togglePasswordVisibility() {
    this.setData({
      isPasswordVisible: !this.data.isPasswordVisible
    });
  }
});